package IO;

import java.io.*;
import java.nio.charset.StandardCharsets;
//输入流InputStream是读取外部文件，将文件的内容打印到控制台
//输出流OutputStream是读取外部文件，可以由控制台去写入字符到目标文件
//输入输出流操作原理  ： 每次只会操作一个字节，从文件中读取或写入的操作是使用for循环一个一个字节去处理
//字节操作流和字符操作流区别？
// 字节操作流，默认每次执行写入操作会直接把数据写入到文件，
// 而字符操作流，默认每次执行写入操作会先存入内存中
//如何选择字节操作流和字符操作流？
//一般操作非文本文件时建议使用字节操作流，操作文本文件还是选择字符操作流

//字符流的内部实现其实还是字节流

public class IN {
    private static void in(){
            File file = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\1207.txt");
        try {
            //输入流：超类InputStream指向子类FileInputStream
            InputStream in = new FileInputStream(file);
            byte[] bytes = new byte[1024];
            StringBuilder sb = new StringBuilder();
            int len = -1 ;
          //输入流由StringBuilder 去接收字符
            while (( len= in.read(bytes)) != -1){
                    String tt=new String(bytes);
                     sb.append(tt);  //--------append去拼接字符
            }
            System.out.println(sb);
            in.close();//关闭输入流



        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private static void out(){
        File file = new File("D:\\Download\\vince.txt");
        System.out.println(file.isFile());
        try {
            //输出流：超类OutputStream指向子类FileOutputStream
            OutputStream ot = new FileOutputStream(file,true);
            //输出的内容 ： 小河流水哗啦啦
            String out = "小河流水哗啦啦\r\n";
            //把内容写入到文件
            ot.write(out.getBytes());
            //关闭流： out.close ;
            ot.close();
            System.out.println("write success");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
      // out();
       in();
    }

}
